package JavaEE_notes.common_API;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

/**
 * 对File类的 常用方法进行了总结
 * @author TaiZai
 * @data 2024/9/22 21:15
 */
public class api_File {
    public static void main(String[] args) throws IOException {
        /*
            初始化File对象的方法
         */
        // 1|创建一个File对象，指代表某个具体的文件
        // File file = new File("E:/Test.txt"); // 单斜杆
        // File file = new File("E:\\Test.text"); // 双斜杆
        File file = new File("E:" + File.separator + "Test.txt"); // 相对路径
        System.out.println(file.length()); // 获取该文件的大小

        File file2 = new File("D:/Develop");
        System.out.println(file2.length()); // 获取该文件夹的大小

        // 注意：File对象可以指代一个不存在的文件路径
        File file3 = new File("D:/resource/aaaa.txt");
        System.out.println(file3.length());
        System.out.println(file3.exists()); // false

        // 绝对路径：带盘符的
        // File file4 = new File("E:/Project/Aiit_Java/src/main/java/JavaEE_notes/common_API/api_File.java");
        // 相对路径（重点）：不带盘符，默认是直接去工程下寻找文件的。
        // 获取当前工作牡蛎
        // String currentDir = System.getProperty("user.dir");
        // System.out.println(currentDir);
        File file4 = new File("src/main/java/JavaEE_notes/common_API/api_File.java");
        System.out.println(file4.length());

        /*
         判断和获取方法
         */
        // 判断当前文件对象对应的文件路径是否存在，存在返回true
        System.out.println(file.exists());

        // 判断当前文件对象指代的是否是文件，是文件返回true
        System.out.println(file.isFile());

        // 判断当前文件对象指代的是否是文件夹，是文件夹返回true
        System.out.println(file.isDirectory());

        // 获取当前File对象的绝对路径
        System.out.println(file.getAbsolutePath());

        // 获取当前File对象的名称
        System.out.println(file.getName());

        // 获取当前File对象的上一级目录
        System.out.println(file.getParent());

        // 获取当前File对象的上一级目录的 File 对象
        File parentFile = file.getParentFile();
        System.out.println(parentFile);

        /*
            File创建和删除文件相关的方法。
         */
        // 创建一个文件夹
        File dir = new File("D:/TestDir");
        boolean mkdir = dir.mkdir();
        System.out.println(mkdir);

        // 创建一个空白文本文件
        File file5 = new File("D:/TestDir/TestFile.txt");
        boolean newFile = file5.createNewFile();
        System.out.println(newFile);

        // 删除一个空白文本文件
        boolean delete = file5.delete();
        System.out.println(delete);

        // 删除一个文件夹
        boolean delete2 = dir.delete();
        System.out.println(delete2);

        /*
            File对象遍历文件夹的方法
         */
        // 1、public String[] list()：获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
        File f1 = new File("E:\\Project");
        String[] names = f1.list();
        for (String name : names) {
            System.out.println(name);
        }

        // 2、public File[] listFiles():（重点）获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回（重点）
        File[] files = f1.listFiles();
        for (File f : files) {
            System.out.println(f.getAbsolutePath());
        }
    }
}
